<?php
class IndexAction extends Action
{


	public function index()
	{
		U('gallery', '', '', true);
	}


	public function gallery()
	{
		// 检测设备类型
		$UA = $_SERVER['HTTP_USER_AGENT'];
		preg_match("/Android|iPhone/", $UA, $matches);
		$is_mobile = $matches ? 1 : 0;
		// 设置路径
		$path = 'Public/photo';
		// 设置目录过滤列表
		$filter_list = array(
			'.',
			'..',
			'.DS_Store',
			'thumb'
		);
		// 获取全部文件
		$files = scandir($path);
		// 过滤目录
		foreach($filter_list as $m=>$n)
		{
			$key = array_search($n, $files);
			if($key !== FALSE)
			{
				unset($files[$key]);
			}
		}
		$files = array_values($files);
		// 图片编号
		$current_index = intval($_GET['p']);
		if($current_index < 1)
		{
			U('gallery', 'p=1', '', true);
		}
		if($current_index > count($files))
		{
			U('gallery', 'p=' . count($files), '', true);
		}
		$prev_index = $current_index - 1;
		if($prev_index < 1)
		{
			$prev_index = count($files);
		}
		$next_index = $current_index + 1;
		if($next_index > count($files))
		{
			$next_index = 1;
		}
		$img_index = array(
			'total' => count($files),
			'prev_index' => $prev_index,
			'current_index' => $current_index,
			'next_index' => $next_index
		);
		// 图片信息
		$img_url = __APP_PUBLIC__ . '/photo/' . $files[$current_index-1];
		$img_size = getimagesize($img_url);
		$img_info = array(
			'url' => $img_url,
			'width' => $img_size[0],
			'height' => $img_size[1]
		);
		// 获取缩略图列表
		// 设置路径
		$thumb_path = 'Public/photo/thumb';
		// 设置目录过滤列表
		$thumb_filter_list = array(
			'.',
			'..',
			'.DS_Store'
		);
		// 获取全部文件
		$thumb_files = scandir($thumb_path);
		// 过滤目录
		foreach($thumb_filter_list as $m=>$n)
		{
			$thumb_key = array_search($n, $thumb_files);
			if($thumb_key !== FALSE)
			{
				unset($thumb_files[$thumb_key]);
			}
		}
		$thumb_files = array_values($thumb_files);

		$this->assign('img_index', $img_index);
		$this->assign('img_info', $img_info);
		$this->assign('thumb_files', $thumb_files);
		if($is_mobile)
		{
			$this->display('m_' . ACTION_NAME);
		}
		else
		{
			$this->display();
		}
	}


	public function get_photo_info()
	{
		$photo_url = strval( trim($_POST['photo_url']) );
		// 获取原始图片URL
		$thumb_url_arr = explode('/', $photo_url);
		$thumb_name_arr = explode('_', $thumb_url_arr[count($thumb_url_arr)-1]);
		// 此处用来处理特殊文件名，防止文件名里包含与分割符相同的符号
		if(count($thumb_name_arr) > 2)
		{
			unset($thumb_name_arr[0]);
			$file_name = implode($thumb_name_arr, '_');
		}
		else
		{
			$file_name = $thumb_name_arr[1];
		}
		$thumb_url_arr[count($thumb_url_arr)-2] = $file_name;
		unset($thumb_url_arr[count($thumb_url_arr)-1]);
		$original_photo_url = implode('/', $thumb_url_arr);
		// 获取原始图片尺寸
		$original_photo_size = getimagesize($original_photo_url);
		$photo_info = array(
			'width' => $original_photo_size[0],
			'height' => $original_photo_size[1]
		);

		echo json_encode($photo_info);
	}


	public function make_thumb()
	{
		die('开发阶段使用，目前已关闭');
		// 设置脚本不超时
		set_time_limit(0);
		// 设置路径
		$path = 'Public/photo';
		// 设置目录过滤列表
		$filter_list = array(
			'.',
			'..',
			'.DS_Store',
			'thumb'
		);
		// 获取全部文件
		$files = scandir($path);
		// 过滤目录
		foreach($filter_list as $m=>$n)
		{
			$key = array_search($n, $files);
			if($key !== FALSE)
			{
				unset($files[$key]);
			}
		}
		$files = array_values($files);
		// 循环处理图片
		foreach($files as $m=>$n)
		{
			// 图片路径
			$img_url = __APP_PUBLIC__ . '/photo/' . $n;
			// 获取原图尺寸
			$img_size = getimagesize($img_url);
			if($img_size[0] >= $img_size[1])
			{
				// 横版图
				$new_width = 200;
				$thumb_ratio = $new_width / $img_size[0];
				$new_height = ceil($img_size[1] * $thumb_ratio);
			}
			else
			{
				// 竖版图
				$new_height = 200;
				$thumb_ratio = $new_height / $img_size[1];
				$new_width = ceil($img_size[0] * $thumb_ratio);
			}
			// 旧图像资源
			$old_img = imagecreatefromjpeg($img_url);
			// 新图像资源
			$new_img = imagecreatetruecolor($new_width, $new_height);
			// 抗锯齿
			imageantialias($new_img, true);
			// 重新取样
			imagecopyresampled($new_img, $old_img, 0, 0, 0, 0, $new_width, $new_height, $img_size[0], $img_size[1]);
			// 保存图像
			imagejpeg($new_img, $path . '/thumb/thumb_' . $n, 100);
			// 释放资源
			imagedestroy($old_img);
		}
	}


	/* 生成缓存文件appcache
	 *
	 */
	public function make_appcache_file()
	{
		die('开发阶段使用，目前已关闭');
		// 设置脚本不超时
		set_time_limit(0);
		// 设置路径
		$path = 'Public/photo';
		// 设置目录过滤列表
		$filter_list = array(
			'.',
			'..',
			'.DS_Store',
			'thumb'
		);
		// 设置appcache文件模板
		$appcache_template_arr = array(
			'CACHE MANIFEST',
			'# By Legolas ' . date('Y-m-d H:i:s'),
			'',
			'[$cache_files]',
			'',
			'NETWORK:',
			'*'
		);

		// 获取全部文件
		$files = scandir($path);
		// 过滤目录
		foreach($filter_list as $m=>$n)
		{
			$key = array_search($n, $files);
			if($key !== FALSE)
			{
				unset($files[$key]);
			}
		}
		$files = array_values($files);
		// 循环处理路径
		foreach($files as $m=>$n)
		{
			$photos[] = 'photo/' . $n;
			$thumbs[] = 'photo/thumb/thumb_' . $n;
		}
		// 生成文件列表
		foreach($photos as $m=>$n)
		{
			$cache_file_list[] = $n;
		}
		foreach($thumbs as $m=>$n)
		{
			$cache_file_list[] = $n;
		}
		$cache_files = implode($cache_file_list, PHP_EOL);
		// 套用模板生成缓存文件
		$cachefile_contents = implode($appcache_template_arr, PHP_EOL);
		$cachefile_contents = str_replace('[$cache_files]', $cache_files, $cachefile_contents);
		// 写入文件
		$cachefile_name = 'Public/gallery_' . date('YmdHis') . '.appcache';
		file_put_contents($cachefile_name, $cachefile_contents, LOCK_EX);
		// 输出提示
		echo '缓存文件已生成，请手动修改文件名以替换旧文件';
	}



}
